﻿#ifndef FCUTILNODEPLUGIN_H
#define FCUTILNODEPLUGIN_H
#include <QtCore/qglobal.h>
#include "DAAbstractPlugin.h"
#include "DAUtilNodePluginGlobal.h"
#include "DAAbstractNodePlugin.h"
//这是插件要求的2个标准导出函数
extern "C" DAUTILNODEPLUGIN_API DAAbstractPlugin *plugin_create();

extern "C" DAUTILNODEPLUGIN_API void plugin_destory(DAAbstractPlugin *p);

class DAUtilNodePlugin : public DAAbstractNodePlugin
{
public:
    DAUtilNodePlugin();
    ~DAUtilNodePlugin();
    //插件id
    virtual QString getIID() const;

    /**
     * @brief 插件名
     * @return
     */
    virtual QString getName() const;

    /**
     * @brief 插件版本
     * @return
     */
    virtual QString getVersion() const;

    /**
     * @brief 插件描述
     * @return
     */
    virtual QString getDescription() const;

    /**
     * @brief 创建一个节点工厂
     * @return
     */
    virtual DAAbstractNodeFactory *createNodeFactory();

    /**
     * @brief 删除一个节点工厂(谁创建谁删除原则)
     * @param p
     */
    virtual void destoryNodeFactory(DAAbstractNodeFactory *p);
};

#endif // FCUTILNODEPLUGIN_H
